package pers.qianyu.module.system.service;

import pers.qianyu.module.core.comm.*;
import pers.qianyu.module.core.domain.system.dto.*;
import pers.qianyu.module.core.domain.system.query.*;
import pers.qianyu.module.core.domain.system.vo.*;

/**
 * @author mizzle rain
 * @date 2020-11-12 14:45
 */
public interface SysUserService {

    /**
     * 插入用户
     *
     * @param sysUserDTO 用户信息
     */
    void insUser(SysUserDTO sysUserDTO);

    /**
     * 根据id更新用户信息
     *
     * @param id         用户id
     * @param sysUserDTO 用户信息
     */
    void updUser(Long id, SysUserDTO sysUserDTO);

    /**
     * 根据id更新用户信息（普通用户）
     *
     * @param sysUserForUpdateDTO 用户信息
     */
    void updUser(SysUserForUpdateDTO sysUserForUpdateDTO);

    /**
     * 查询用户信息
     *
     * @param sysUserQuery 查询条件
     */
    Pagination<SysUserVO> queryUser(SysUserQuery sysUserQuery);

    /**
     * 根据id查询用户[详细信息]，包括权限、角色信息
     *
     * @param id 用户 id
     * @return 用户信息
     */
    SysUserVO queryById(Long id);

    /**
     * 根据id查询用户信息，不包括权限、角色信息
     *
     * @param id 用户 id
     * @return 用户信息
     */
    SimpleUserVO querySimpleUserInfoById(Long id);

    /**
     * 根据 id 删除用户
     *
     * @param id 用户 id
     */
    void delUser(Long id);

    /**
     * 根据用户名判断用户是否存在
     *
     * @param username 用户名
     * @return 存在 true 不存在 false
     */
    boolean ifUsernameExist(String username);

    /**
     * 注册用户
     *
     * @param registerDTO 用户信息
     */
    void register(RegisterDTO registerDTO);
}
